/**   
*    
* @file
* @brief
* @文件名	: OnRecordScrollPostionListener
* @版权所有	: 网龙应用软件开发一部
* @作  者	: chenqian
* @创建时间	: 2014-7-16 上午10:15:17 
* @文件描述	:  
* @version	Ver 1.1
*/
package com.common.widget;

import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;

/**
 *用于精确定位到listview滚动位置 
 * <br>Created 2014-7-16 上午10:15:17
 * @version  
 * @author   chenqian		
 *
 * @see 	 
 */

public class RecordScrollPostionListener implements OnScrollListener {
	private int mScrollItem = 0;
	private int mScrollTop = 0;
	private ListView mListView;
	/**
	 * Creates a new instance of RecordScrollPostionListener.
	 * <br>Created 2014-7-16 上午10:20:56
	 * @param listView ListView
	 */
	public  RecordScrollPostionListener(ListView listView){
		mListView = listView;
	}
	/**
	 * 获取当前滚动到的list的item索引
	 * 
	 * <br>Created 2014-7-16 上午10:21:48
	 * @return 当前滚动到的list的item索引
	 * @author       chenqian
	 */
	public int getScrollItem(){
		return mScrollItem;
	}
	/**
	 * 设置滚动的位置
	 * 
	 * <br>Created 2014-7-16 上午10:25:57
	 * @param scrollItem int
	 * @param scrollTop int
	 * @author       chenqian
	 */
	public void setSelectionFromTop(int scrollItem, int scrollTop){
		mScrollItem = scrollItem;
		mScrollTop = scrollTop;
		setSelectionFromTop();
	}
	/**
	 * 设置滚动的位置
	 * 
	 * <br>Created 2014-7-16 上午10:37:04
	 * @author       chenqian
	 */
	public void setSelectionFromTop(){
		if(null != mListView){
			mListView.setSelectionFromTop(mScrollItem,mScrollTop);
		}
	}
	/**
	 * 获取 list的第一个item和顶部的距离
	 * 
	 * <br>Created 2014-7-16 上午10:21:51
	 * @return  list的第一个item和顶部的距离
	 * @author       chenqian
	 */
	public int getScrollTop(){
		return mScrollTop;
	}
	@Override
	public void onScrollStateChanged(AbsListView view, int scrollState) {
		if(null == mListView){
			return;
		}
		if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
			// mScrollItem记录当前可见的List顶端的一行的位置
			mScrollItem = mListView.getFirstVisiblePosition();
		}
		// mScrollTop记录位移
		View v = view.getChildAt(0);
		mScrollTop = (v == null) ? 0 : v.getTop();
	}

	@Override
	public void onScroll(AbsListView view, int firstVisibleItem,
			int visibleItemCount, int totalItemCount) {
	}
}
